package vista.pasos;

import controlador.Controlador;
import controlador.Seleccion;
import javax.swing.JPanel;
import javax.swing.JLabel;

import net.miginfocom.swing.MigLayout;

import java.awt.Color;
import java.awt.Font;

@SuppressWarnings("serial")
public abstract class Paso extends JPanel {
	
	private boolean activo;
    private final JLabel lblSeleccionRequerida = new JLabel("Debe seleccionar una opci\u00F3n");
	
	public Paso() {
		setLayout(new MigLayout("", "[38px][][127px][406px][1px]", "[25px][][][][][][][][]"));
		lblSeleccionRequerida.setFont(new Font("Tahoma", Font.BOLD, 13));
		lblSeleccionRequerida.setForeground(Color.RED);
		lblSeleccionRequerida.setVisible(false);
		add(lblSeleccionRequerida, "cell 1 10,alignx left,aligny center");
		
		activo = true;
	}
	
	protected abstract void ejecutarPaso();
	protected abstract boolean haySeleccion();
	protected abstract void limpiarPaso();
	
	public void inicializar() {
		// implementacion vacia por defecto
	}
	
	public boolean ejecutar() {
		boolean haySeleccion = haySeleccion();
		lblSeleccionRequerida.setVisible(!haySeleccion);
		if (haySeleccion) {
			ejecutarPaso();
		}
		return haySeleccion;
	}
	
    public boolean estaActivo() {
        return this.activo;
    }

    protected void activar(boolean active) {
        this.activo = active;
    }
    
    public void limpiar() {
    	activo = true;
    	lblSeleccionRequerida.setVisible(false);
    	limpiarPaso();
    }

	protected Seleccion getSeleccion() {
		return Controlador.getInstance().getSeleccion();
	}

	public boolean tieneAnterior() {
		return true;
	}
	
	public boolean tieneSiguiente() {
		return true;
	}
}
